package com.eight.common.pojo;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;

import java.io.Serializable;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

/**
* 课程
* @TableName edu_course
*/
@Data
@ApiModel(value = "coures对象",description = "课程列表")
@TableName("edu_course")
@EqualsAndHashCode(callSuper = false)
public class ZoneCourse implements Serializable {

    /**
    * 课程ID
    */
    @NotNull(message="[课程ID]不能为空")
    @ApiModelProperty("课程ID")
    @TableId(type = IdType.ASSIGN_ID)
    private String id;
    /**
    * 课程讲师ID
    */
    @NotNull(message="[课程讲师ID]不能为空")
    @ApiModelProperty("课程讲师ID")
    private String teacherId;
    /**
    * 课程专业ID
    */
    @NotNull(message="[课程专业ID]不能为空")
    @ApiModelProperty("课程专业ID")
    private String subjectId;
    /**
    * 课程专业父级ID
    */
    @NotNull(message="[课程专业父级ID]不能为空")
    @ApiModelProperty("课程专业父级ID")
    private String subjectParentId;
    /**
    * 课程标题
    */
    @NotBlank(message="[课程标题]不能为空")
    @Size(max= 50,message="编码长度不能超过50")
    @ApiModelProperty("课程标题")
    @Length(max= 50,message="编码长度不能超过50")
    private String title;
    /**
    * 课程销售价格，设置为0则可免费观看
    */
    @NotNull(message="[课程销售价格，设置为0则可免费观看]不能为空")
    @ApiModelProperty("课程销售价格，设置为0则可免费观看")
    private BigDecimal price;
    /**
    * 总课时
    */
    @NotNull(message="[总课时]不能为空")
    @ApiModelProperty("总课时")
    private Object lessonNum;
    /**
    * 课程封面图片路径
    */
    @NotBlank(message="[课程封面图片路径]不能为空")
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("课程封面图片路径")
    @Length(max= 255,message="编码长度不能超过255")
    private String cover;
    /**
    * 销售数量
    */
    @NotNull(message="[销售数量]不能为空")
    @ApiModelProperty("销售数量")
    private Long buyCount;
    /**
    * 浏览数量
    */
    @NotNull(message="[浏览数量]不能为空")
    @ApiModelProperty("浏览数量")
    private Long viewCount;
    /**
    * 乐观锁
    */
    @NotNull(message="[乐观锁]不能为空")
    @ApiModelProperty("乐观锁")
    private Long version;
    /**
    * 课程状态 Draft未发布  Normal已发布
    */
    @NotBlank(message="[课程状态 Draft未发布  Normal已发布]不能为空")
    @Size(max= 10,message="编码长度不能超过10")
    @ApiModelProperty("课程状态 Draft未发布  Normal已发布")
    @Length(max= 10,message="编码长度不能超过10")
    private String status;
    /**
    * 逻辑删除 1（true）已删除， 0（false）未删除
    */
    @ApiModelProperty("逻辑删除 1（true）已删除， 0（false）未删除")
    private Integer isDeleted;
    /**
    * 创建时间
    */
    @NotNull(message="[创建时间]不能为空")
    @ApiModelProperty("创建时间")
    private LocalDateTime gmtCreate;
    /**
    * 更新时间
    */
    @NotNull(message="[更新时间]不能为空")
    @ApiModelProperty("更新时间")
    private LocalDateTime gmtModified;
    /**
    * 课程备注
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("课程备注")
    @Length(max= 255,message="编码长度不能超过255")
    private String remark;
    /**
    * 是否添加 0 否  1 是
    */
    @ApiModelProperty("是否添加 0 否  1 是")
    private Integer isAdd;

    private ZoneSubject eduSubject;

    @TableField(exist = false)
    private String parentname;

    @TableField(exist = false)
    private String subjecttitle;

    @TableField(exist = false)
    private String courseTitle;

    @TableField(exist = false)
    private Integer tzcisDisable;

    @TableField(exist = false)
    private Integer  tzcisDeleted;

    @TableField(exist = false)
    private String  zcId;



}
